package com.wicket.okrframework.web.contorller;

import com.github.pagehelper.Page;
import com.wicket.okrframework.biz.service.BaseService;
import com.wicket.okrframework.biz.service.dto.req.*;
import com.wicket.okrframework.biz.service.dto.res.*;
import com.wicket.okrframework.common.ro.OkrResult;
import com.wicket.okrframework.common.util.CommonFunctionHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ：
 * @date ：
 *
 *
 * @version 1.0
 */
@RestController
@RequestMapping("/base/base/")
public class BaseController {

    @Autowired
    BaseService baseService;

    /**
   * D1-2查询联盟应用详情
   */
    @PostMapping("queryAppDetail")
    public OkrResult<QueryAppDetailRespDto> queryAppDetail(@RequestBody @Validated QueryAppDetailReqDto reqDTO){
    return OkrResult.success(baseService.queryAppDetail(reqDTO));
    }

    /**
     * D1-2查询空间详情
     */
    @PostMapping("querySpaceDetail")
    public OkrResult<QuerySpaceDetailRespDto> querySpaceDetail(@RequestBody @Validated QuerySpaceDetailReqDto reqDTO) {
        return OkrResult.success(baseService.querySpaceDetail(reqDTO));
    }

    /**
   * D1-2查询空间列表
   */
    @PostMapping("querySpaceList")
    public OkrResult<QuerySpaceListRespDto> querySpaceList(@RequestBody @Validated QuerySpaceListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QuerySpaceListRespDto retData = baseService.querySpaceList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
     * D1-2查场景列表（公共）
     */
    @PostMapping("querySceneListCom")
    public OkrResult<QuerySceneListComRespDto> querySceneListCom(
            @RequestBody @Validated QuerySceneListComReqDto reqDTO) {
        Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(), reqDTO.getPageSize());

        QuerySceneListComRespDto retData = baseService.querySceneListCom(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);

    }

    /**
   * D1-2修改联盟应用
   */
    @PostMapping("updateApp")
    public OkrResult<UpdateAppRespDto> updateApp(@RequestBody @Validated UpdateAppReqDto reqDTO){
    return OkrResult.success(baseService.updateApp(reqDTO));
    }

    /**
   * D1-2新增联盟应用
   */
    @PostMapping("addApp")
    public OkrResult<AddAppRespDto> addApp(@RequestBody @Validated AddAppReqDto reqDTO){
    return OkrResult.success(baseService.addApp(reqDTO));
    }

    /**
   * D1-2查询联盟应用列表
   */
    @PostMapping("queryAppList")
    public OkrResult<QueryAppListRespDto> queryAppList(@RequestBody @Validated QueryAppListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryAppListRespDto retData = baseService.queryAppList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2修改空间
   */
    @PostMapping("updateSpace")
    public OkrResult<UpdateSpaceRespDto> updateSpace(@RequestBody @Validated UpdateSpaceReqDto reqDTO){
    return OkrResult.success(baseService.updateSpace(reqDTO));
    }

    /**
   * D1-2新增空间（平台）
   */
    @PostMapping("addSpace")
    public OkrResult<AddSpaceRespDto> addSpace(@RequestBody @Validated AddSpaceReqDto reqDTO){
    return OkrResult.success(baseService.addSpace(reqDTO));
    }

    /**
   * D1-2-07修改场景
   */
    @PostMapping("updateScene")
    public OkrResult<UpdateSceneRespDto> updateScene(@RequestBody @Validated UpdateSceneReqDto reqDTO){
    return OkrResult.success(baseService.updateScene(reqDTO));
    }

    /**
   * D1-2查询场景列表
   */
    @PostMapping("querySceneList")
    public OkrResult<QuerySceneListRespDto> querySceneList(@RequestBody @Validated QuerySceneListReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QuerySceneListRespDto retData = baseService.querySceneList(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2查空间详情(公共)
   */
    @PostMapping("querySpaceDetailCom")
    public OkrResult<QuerySpaceDetailComRespDto> querySpaceDetailCom(@RequestBody @Validated QuerySpaceDetailComReqDto reqDTO){
    return OkrResult.success(baseService.querySpaceDetailCom(reqDTO));
    }

    /**
   * D1-2查场景列表(边界)
   */
    @PostMapping("querySceneListBorder")
    public OkrResult<QuerySceneListBorderRespDto> querySceneListBorder(@RequestBody @Validated QuerySceneListBorderReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QuerySceneListBorderRespDto retData = baseService.querySceneListBorder(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2查联盟应用列表(边界)
   */
    @PostMapping("queryAppListBorder")
    public OkrResult<QueryAppListBorderRespDto> queryAppListBorder(@RequestBody @Validated QueryAppListBorderReqDto reqDTO){
    Page<?> page = CommonFunctionHelper.startPage(reqDTO.getPageNum(),reqDTO.getPageSize());

        QueryAppListBorderRespDto retData = baseService.queryAppListBorder(reqDTO);

        retData.setPageNum(page.getPageNum());
        retData.setPageSize(page.getPageSize());
        retData.setTotalNum(page.getTotal());
        return OkrResult.success(retData);
    
    }

    /**
   * D1-2-07新增场景
   */
    @PostMapping("addScene")
    public OkrResult<AddSceneRespDto> addScene(@RequestBody @Validated AddSceneReqDto reqDTO){
    return OkrResult.success(baseService.addScene(reqDTO));
    }

    /**
   * D1-2-07查询场景详情
   */
    @PostMapping("querySceneDetail")
    public OkrResult<QuerySceneDetailRespDto> querySceneDetail(@RequestBody @Validated QuerySceneDetailReqDto reqDTO){
    return OkrResult.success(baseService.querySceneDetail(reqDTO));
    }

    /**
     * D1-2批量查询空间列表
     */
    @PostMapping("batchQuerySpaceListBorder")
    public OkrResult<BatchQuerySpaceListBorderRespDto> batchQuerySpaceListBorder(@RequestBody @Validated BatchQuerySpaceListBorderReqDto reqDTO) {
        return OkrResult.success(baseService.batchQuerySpaceListBorder(reqDTO));
    }

    /**
   * D1-1批量查询空间(公共)
   */
    @PostMapping("batchQuerySpaceCom")
    public OkrResult<BatchQuerySpaceComRespDto> batchQuerySpaceCom(@RequestBody @Validated BatchQuerySpaceComReqDto reqDTO){
    return OkrResult.success(baseService.batchQuerySpaceCom(reqDTO));
    }
/**
   * D1-2查询联盟应用登录用详情(公共)
   */
    @PostMapping("queryAppforLoginDetailCom")
    public OkrResult<QueryAppforLoginDetailComRespDto> queryAppforLoginDetailCom(@RequestBody @Validated QueryAppforLoginDetailComReqDto reqDTO){
    return OkrResult.success(baseService.queryAppforLoginDetailCom(reqDTO));
    }
/**
   * D1-2查询联盟应用详情(公共)
   */
    @PostMapping("queryAppDetailCom")
    public OkrResult<QueryAppDetailComRespDto> queryAppDetailCom(@RequestBody @Validated QueryAppDetailComReqDto reqDTO){
    return OkrResult.success(baseService.queryAppDetailCom(reqDTO));
    }
/**
   * D1-2查询空间列表(管理)(公共)
   */
    @PostMapping("querySpaceListCom")
    public OkrResult<QuerySpaceListComRespDto> querySpaceListCom(@RequestBody @Validated QuerySpaceListComReqDto reqDTO){
    return OkrResult.success(baseService.querySpaceListCom(reqDTO));
    }
/**
   * D1查询空间信息详情(公共)
   */
    @PostMapping("querySpaceInfoDetailCom")
    public OkrResult<QuerySpaceInfoDetailComRespDto> querySpaceInfoDetailCom(@RequestBody @Validated QuerySpaceInfoDetailComReqDto reqDTO){
    return OkrResult.success(baseService.querySpaceInfoDetailCom(reqDTO));
    }
/**
   * D1修改空间(公共)
   */
    @PostMapping("updateSpaceCom")
    public OkrResult<UpdateSpaceComRespDto> updateSpaceCom(@RequestBody @Validated UpdateSpaceComReqDto reqDTO){
    return OkrResult.success(baseService.updateSpaceCom(reqDTO));
    }
/**
   * D1执行分段查空间(公共)
   */
    @PostMapping("implementSegQuerySpaceCom")
    public OkrResult<ImplementSegQuerySpaceComRespDto> implementSegQuerySpaceCom(@RequestBody @Validated ImplementSegQuerySpaceComReqDto reqDTO){
    return OkrResult.success(baseService.implementSegQuerySpaceCom(reqDTO));
    }
}
